\section{6. Relationel Algebra herunder: relation, tuple, set og operatorer (select, projection, join...) samt betydningen for SQL erklæringer}
\begin{center}
\line(1,0){500}
\end{center}

\includegraphics[scale=.7]{6-relsql}\\

\begin{tabular}{| l | l |}
\hline
\textbf{Relationel Algebra} & \textbf{MS SQL} \\ \hline
INSERT & INSERT \\ \hline
MODIFY & UPDATE \\ \hline
DELETE & DELETE \\ \hline
PROJECT & SELECT \\ \hline
SELECT & WHERE \\ \hline
JOIN & JOIN \\ \hline
\end{tabular}
\vspace{.6cm}\\
\includegraphics[scale=0.6]{6-operatorer}

\begin{itemize}    
    \item Et \textbf{Set}, er den matematiske definition af en samling af objekter uden gengangere/duplikater.
    \item Et \textbf{Domæne} er et \textbf{Set} af atomare værdier/objekter.  
	\item En \textbf{Relation} er et \textbf{Set} af \textbf{Tuples}.    
	\item \textbf{Tuple} er en ordnet liste af elementer 
\end{itemize}

\begin{enumerate}
\item SELECT
\begin{itemize}
    \item Udvælgelse med logiske operatorer
\end{itemize}

\item PROJECTION
\begin{itemize}
    \item Udvælgelse fra et domæne, kun attribut sæt
\end{itemize}

\item CARTETISK PRODUKT (Cross Join X)
\begin{itemize}
    \item Alle værdier fra R kombineres med alle værdier fra S
\end{itemize}

\item SET UNION (Forenings mængde)\\
\includegraphics[scale=1]{6-union}\\
\item SET DIFFERENCE (Differens mængde)\\
\includegraphics[scale=1]{6-diff}\\
\item SET INTERSECTION (Overlappende mængde)\\
\includegraphics[scale=1]{6-inter}\\
\item RENAME (Unary operator, kun et felt i en tuple)
\end{enumerate}

\subsection{JOIN}
\begin{itemize}
    \item CROSS JOIN, INNER JOIN, OUTER JOIN er interessante i RDB
    \begin{itemize}
        \item CROSS JOIN = CARTETISK PRODUKT
        \item INNER JOIN / NATURAL JOIN - Kræver attributer i begge tabeller af samme \textbf{navn og type}
        \begin{itemize}
            \item Fjerner duplikerede attributter
        \end{itemize}
    \end{itemize}
\end{itemize}
Join data from two or more tables.\\
\noindent
\textbf{(INNER) JOIN} \textit{Return rows where there are at least one match in both tables}\\
\textbf{LEFT JOIN} \textit{Return all rows from the table on the left side of the join statement, even if there are no matches in the right table}\\
\textbf{RIGHT JOIN} \textit{Return all rows from the table on the right side of the join statement, even if there are no matches in the left table}\\
\textbf{FULL JOIN} \textit{Return rows where there is a match in either table}\\

\noindent
\textbf{Select Statment Example:}
\noindent
\textbf{SELECT} table1.ID, table2.column
\textbf{FROM} table1
\textbf{LEFT JOIN} table2
\textbf{ON} table1.ID=table2.ID
\textbf{WHERE} isActive = 1\\
